
package com.gitee.sop.layui.adminserver.module.background.admin.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gitee.sop.layui.adminserver.module.background.admin.entity.SysUserMenuRoleRelation;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * @author: admin
 * @date: 2020-04-24
 * @version: 1.0.0
 */
public interface SysUserMenuRoleRelationMapper extends BaseMapper<SysUserMenuRoleRelation> {

    /**
     * 获取指定用户的菜单角色列表
     *
     * @param appId    应用id
     * @param userUuid 用户uuid
     * @return
     */
    List<String> listRoleUuidByUserUuid(@Param("appId") String appId, @Param("userUuid") String userUuid);

    /**
     * 查询指定用户的菜单url地址列表
     *
     * @param appId    应用id
     * @param userUuid
     * @return
     */
    Set<String> selectMenuUrlListByUserUuid(@Param("appId") String appId, @Param("userUuid") String userUuid);

    /**
     * 查询指定菜单角色的用户关联条目数
     *
     * @param appId            应用id
     * @param menuRoleUuidList 菜单角色uuid列表
     * @return
     */
    int countInMenuRoleUuids(@Param("appId") String appId, @Param("menuRoleUuidList") List<String> menuRoleUuidList);

    /**
     * 删除指定用户，指定创建用户的数据
     *
     * @param appId       应用id
     * @param userUuid    关联关系的用户uuid
     * @param creatorUuid 菜单角色创建用户uuid ，用于限制删除角色的权限
     */
    void deleteByUserUuid(@Param("appId") String appId, @Param("userUuid") String userUuid, @Param("creatorUuid") String creatorUuid);

}
